package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.PO.PropertyParkingSpacePO;
import com.itlong.cloud.POJO.VO.property.PropertyParkingGetVO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      物业管理-车位管理持久层接口
 * </desc>
 *
 * @createDate 2018/08/17
 */
@Mapper
@Repository
public interface IPropertyParkingDao extends IAbstractBaseDao<PropertyParkingSpacePO> {

    /**
     * <desc>
     *      添加车位信息
     * </desc>
     *
     * @param map 添加车位信息数据集
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/17
     */
    Integer saveParking(Map<String, Object> map);

    /**
     * <desc>
     *      列表查询车位信息
     * </desc>
     *
     * @param params 查询参数集
     * @return 查询结果集
     * @author wangzhi
     * @createDate 2018/08/17
     */
    List<PropertyParkingGetVO> getParkingsByPage(Map<String, Object> params);

    /**
     * <desc>
     *      查询车位信息总记录数
     * </desc>
     *
     * @param params 查询参数集
     * @return 查询结果集
     * @author wangzhi
     * @createDate 2018/08/17
     */
    Integer getParkingsRecordCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取单个车位信息
     * </desc>
     *
     * @param params 查询参数集
     * @return 单个车位信息
     * @author wangzhi
     * @createDate 2018/08/17
     */
    PropertyParkingGetVO getOneParking(Map<String,Object> params);

    /**
     * <desc>
     *      修改车位信息
     * </desc>
     *
     * @param map 修改参数
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/17
     */
    Integer updateParking(Map<String, Object> map);

    /**
     * <desc>
     *      批量删除车位信息
     * </desc>
     *
     * @param parkingIdList 车位id集合
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/17
     */
    Integer deleteParkings(List<String> parkingIdList);

    /**
     * <desc>
     *      查询所有车位信息
     * </desc>
     *
     * @param params 查询参数集
     * @return 结果集
     * @author wangzhi
     * @createDate 2018/08/17
     */
    List<PropertyParkingGetVO> getAllParkings(Map<String, Object> params);

    /**
     * <desc>
     *      批量导入车位信息
     * </desc>
     *
     * @param propertyParkingSpacePOS 车位信息集
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/17
     */
    Integer batchSaveParkings(List<PropertyParkingSpacePO> propertyParkingSpacePOS);

    /**
     * <desc>
     *      获取车位号，多个,相连
     * </desc>
     *
     * @param parkingIds 车位id集合
     * @return 车位号连接字符串
     * @author wangzhi
     * @createDate 2018/08/22
     */
    String getParkingNumByIds(List<String> parkingIds);

    /**
     * <desc>
     *      获取车位信息集合
     * </desc>
     *
     * @param parkingIds 车位id集合
     * @return 车位信息集合
     * @author wangzhi
     * @createDate 2018/10/23
     */
    List<PropertyParkingGetVO> getParkingsByIds(List<String> parkingIds);
}
